/**
 * Copyright (C), -2025, www.bosssof.com.cn
 * @FileName BusinessException.java
 * @Author Administrator
 * @Date 2022-10-24  17:24
 * @Description 按照java基础作业 (三)	异常处理类作业 定义异常业务类
 * History:
 * <author> Administrator
 * <time> 2022-10-24  17:24
 * <version> 1.0.0
 * <desc> 版本描述
 */
package com.bosssoft.hr.train.j2se.example.exception;

/**
 * @Class BusinessException
 * @Description
 * @Author Administrator
 * @Date 2022-10-24  17:24
 * @version 1.0.0
 */
public class BusinessException extends RuntimeException{
    /**
     * 错误码 建议是String 类型更加灵活这里先这样
     */
    private final int code;

    /**
     *  构建用户自动以异常对象
     *  通常是 if xx!=xxx then throw new BusinessException()
     * @param code  错误码 有一个业务和错误的映射关系表
     * @param message  错误消息 提示给用户看
     * @param cause 具体的异常信息，用于日志中输出便于分析诊断问题
     */
    public BusinessException(int code, String message, Throwable cause) {
        super(message, cause);
        this.code=code;
    }

    /**
     * 通过枚举构建异常对象这种方式更加友好
     * @param exceptionCode 枚举对象 包括错误码和消息这个是更加友好的定义方式
     */
    public BusinessException(ExceptionCode exceptionCode){
        super(exceptionCode.getMsg());
        this.code = exceptionCode.getCode();
    }

    /**
     *  构建用户自动以异常对象
     *  通常是 if xx!=xxx then throw new BusinessException()
     * @param exceptionCode
     * @param cause
     */
    public BusinessException(ExceptionCode exceptionCode, Throwable cause){
        super(cause.getMessage(),cause);
        this.code = exceptionCode.getCode();
    }

    public int getCode() {
        return code;
    }


}
